package cn.biplam.front.template.base;

import cn.biplam.common.wrapper.ErrorMessage;
import cn.biplam.front.html.HtmlDiv;
import cn.biplam.front.html.HtmlText;
import cn.biplam.front.html.HtmlTextArea;
import cn.biplam.front.html.base.HtmlWindow;
import cn.biplam.front.html.base.Const.Wrap_Mode;
import cn.biplam.front.template.Template;

/**
 * 多行文本输入框模版,含标题
 * @author XiaoRuxing 2009-5-5上午10:34:24
 * @version 1.0
 */
public class TextArea implements Template{
	
	private HtmlDiv div;
	/** 标题 */
	private HtmlText lable;
	/** 多行输入框 */
	private HtmlTextArea textArea;
	
	/**
	 * 创建指定标题、名称和内容的输入框
	 * @param sLable 标题
	 * @param sName  名称
	 * @param value  内容
	 * @throws ErrorMessage 
	 */
	public TextArea(String sLable,String sName,String value) throws ErrorMessage{
		this(sLable,sName,value,0,0);
	}
	
	/**
	 * 创建指定标题、名称、内容、宽度和高度的多行输入框
	 * @param sLable 标题
	 * @param sName  名称
	 * @param value  内容
	 * @param cols   宽度
	 * @param rows   高度
	 * @throws ErrorMessage 
	 */
	public TextArea(String sLable,String sName,String value,int cols,int rows) throws ErrorMessage{
		this.div=new HtmlDiv(null,"ip");
		this.lable=new HtmlText(null,"il",sLable);
		this.textArea=new HtmlTextArea(null,null,sName,value);
		if(cols>20){
			this.textArea.setCols(cols);
		}
		if(rows>0){
			this.textArea.setRows(rows);
		}else{
			this.textArea.setRows(5);
		}
		this.textArea.setWrap(Wrap_Mode.Virtual);
	}
	
	/**
	 * 获取对象宽度
	 * @return 返回对象字符宽度
	 */
	public int getLength(){
		/** 标题宽度+文本宽度+滚动条宽度+标题和文本间隔 */
		return this.lable.length()+this.textArea.getCols()+4;
	}
	
	/**
	 * 获取文本输入域行数
	 * @return 行数
	 */
	public int getHeight(){
		return this.textArea.getRows();
	}
	
	/**
	 * 获取带标题的多行输入框
	 * @return 返回带标题的多行输入框
	 * @throws ErrorMessage
	 */
	public HtmlWindow get() throws ErrorMessage {
		if(this.lable.getLength()>0)
			this.div.put(lable);
		this.div.put(textArea);
		return this.div;
	}
	
}
